From: Keir Fraser Date: Thu, 15 May 2008 08:38:00 +0000 (+0100) Subject: x86: Fix an S3 bug caused by x_firmware_waking_vector X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14214^2~6 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=30193253a0c4ae2c9dfb29cd27c987d7b700f340;p=xen.git x86: Fix an S3 bug caused by x_firmware_waking_vector According to ACPI spec., x_firmware_waking_vector in FACS is for waking up in protected mode and firmware_waking_vector is for in real mode. Xen once use x_firmware_waking_vector which can make S3 failed on some platform. This patch fixed the bug by using non-x one. Signed-off-by: Huacai Chen --- diff --git a/xen/arch/x86/acpi/boot.c b/xen/arch/x86/acpi/boot.c index 1cc148b2e3..c42c4338d0 100644 --- a/xen/arch/x86/acpi/boot.c +++ b/xen/arch/x86/acpi/boot.c @@ -441,17 +441,9 @@ acpi_fadt_parse_sleep_info(struct acpi_table_fadt *fadt) "FACS is shorter than ACPI spec allow: 0x%x", facs->length); - if ((rsdp->revision < 2) || (facs->length < 32)) { - acpi_sinfo.wakeup_vector = facs_pa + - offsetof(struct acpi_table_facs, - firmware_waking_vector); - acpi_sinfo.vector_width = 32; - } else { - acpi_sinfo.wakeup_vector = facs_pa + - offsetof(struct acpi_table_facs, - xfirmware_waking_vector); - acpi_sinfo.vector_width = 64; - } + acpi_sinfo.wakeup_vector = facs_pa + + offsetof(struct acpi_table_facs, firmware_waking_vector); + acpi_sinfo.vector_width = 32; printk(KERN_INFO PREFIX " wakeup_vec[%"PRIx64"], vec_size[%x]\n",